/************************** ******* 
*-- 33 KDH Knieja ---------------*
*-- im. Harcerzy Września 1939 --*
*-- autor: Marcin Rzepisko ------*
*-- data: 2014-03-18 ------------*
**********************************/

package net.kdh.knieja.kontroler.narzedzia;

import javax.interceptor.AroundInvoke;
import javax.interceptor.Interceptor;
import javax.interceptor.InvocationContext;
import net.kdh.knieja.model.wspolne.DataCzas;
import net.kdh.knieja.model.wspolne.wyjatki.Wyjatek;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 *
 * @author rz.marcin@gmail.com
 */
@Interceptor
public class ZapisWyjatkowInterceptor {
    
    private final static Logger LOGGER = LoggerFactory.getLogger("Wyjatki");
    
    @AroundInvoke
    public void logujWyjatek(InvocationContext context) throws Exception {
        try {
            context.proceed();
        } catch (Exception ex) {
            if (ex instanceof Wyjatek) {
                Wyjatek w = (Wyjatek) ex;
                w.setDateTime(DataCzas.biezacaDataCzas());
                w.setNazwaMetody(context.getMethod().getName());
                w.setNazwaKlasy(context.getConstructor().getName());
                LOGGER.error(w.toString());
            } else {
                LOGGER.error("Zgłoszono pozasystemowy wyjątek: " + ex.getClass().getName(), ex);
            }
            throw ex;
        }
    }
}
